home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / cmds / cc / g++-dist / ChangeLog.orig < prev    next >
Encoding:
Text File  |  1990-03-01  |  36.6 KB  |  965 lines

  1. Wed Feb 28 09:45:09 1990  Michael Tiemann  (tiemann at teacake)
  2.  
  3.     * version.c: version 1.37.0 released.
  4.  
  5.     * HINTS: Hacked to look like an RMAIL file.
  6.  
  7.     * cplus-typeck.c (build_modify_expr_1): Copy virtual baseclasses
  8.     of members.
  9.  
  10. Mon Feb 26 06:36:50 1990  Michael Tiemann  (tiemann at teacake)
  11.  
  12.     * cplus-class.c (finish_base_struct): When building B->VFIELDS,
  13.     use precisely the right baseclass in the TREE_PURPOSE slot.
  14.     * cplus-class.c (modify_vtable_entries): Add additional test of
  15.     normalcy, which is that TREE_PURPOSE (VSLOTS) agree with the
  16.     basetype that TREE_VALUE (VSLOTS) is.
  17.  
  18.     * cplus-decl.c (finish_decl): If ASMSPEC_TREE is non-zero, then
  19.     zero out DECL_RTL (DECL).  Otherwise, it won't take.
  20.  
  21. Sun Feb 25 03:50:08 1990  Michael Tiemann  (tiemann at teacake)
  22.  
  23.     * cplus-typeck.c (build_modify_expr): Fix off-by-one bug in array
  24.     assignment case.
  25.  
  26.     * cplus-init.c (cplus_expand_expr_stmt): Move function from here...
  27.     * cplus-decl.c (cplus_expand_expr_stmt): ...to here.  Now we can
  28.     handle binding-level semantics at `exprstmt' boundaries.
  29.  
  30.     * cplus-decl.c (lang_decode_option): Moved function from here...
  31.     * cplus-decl2.c (lang_decode_option): ...to here.  Also moved
  32.     flags around, as neccessary.
  33.  
  34.     * cplus-method.c (various places): Call    `dump_readonly_or_volatile'
  35.     in many more places (saving 624 bytes object code).
  36.  
  37.     * tree.h (struct tree_common): Add `raises_attr' and define
  38.     TREE_RAISES.
  39.     * tree.c (build{,1}): Set TREE_RAISES bit.
  40.     * cplus-class.c (build_method_call): Set TREE_RAISES bit.
  41.     * cplus-cvt.c (convert_to_aggr): Ditto.
  42.     * cplus-typeck.c (build_function_call,actualparameterlist): Ditto.
  43.     * cplus-init.c (expand_aggr_init_1): Don't know what to do about
  44.     TREE_RAISES, so #if 0'd out code to set it.
  45.  
  46.     * cplus-decl.c (struct binding_level): Add new fields
  47.     `more_exceptions_ok' and `have_exceptions'.
  48.  
  49. Sat Feb 24 14:05:01 1990  Michael Tiemann  (tiemann at arkesden)
  50.  
  51.     * cplus-decl.c (finish_function): Move code up that handles named
  52.     return values that got kicked out of registers (hard or pseudo).
  53.  
  54.     * stmt.c (expand_function_start): Failed to set TREE_REGDECL in
  55.     the case that PARMS_HAVE_CLEANUPS was nonzero.
  56.  
  57.     * stmt.c (expand_goto_internal,fixup_cleanups): After running
  58.     cleanups, fixup the stack.
  59.  
  60. Fri Feb 23 07:40:17 1990  Michael Tiemann  (tiemann at arkesden)
  61.  
  62.     * cplus-cvt.c (build_type_conversion): There is only one void
  63.     type, so don't try looking "default" void to see if different.
  64.  
  65.     * cplus-except.c (expand_cplus_end_catch): Call `expand_end_catch'
  66.     instead of `expand_escape_except'.
  67.  
  68.     * cplus-except.c (expand_cplus_{end_except,reraise}): In case of
  69.     unhandled exceptions, have the program call
  70.     `__unhandled_exception' instead of `abort'.
  71.  
  72.     * cplus-class.c (ideal_candidate): If the best candidate requires
  73.     a strict subset of the user-defined type conversions of all the
  74.     other candidates, pick it as the best.
  75.  
  76.     * cplus-type2.c (build_functional_cast): If both attempts to cast
  77.     the argument failed, see why with LOOKUP_NORMAL, not
  78.     LOOKUP_COMPLAIN.
  79.  
  80. Thu Feb 22 03:52:00 1990  Michael Tiemann  (tiemann at arkesden)
  81.  
  82.     * clpus-decl.c ({push,pop}_decl_level): Now #includes "stack.h"
  83.     and uses `{push,pop}_stack_level'.
  84.  
  85.     * cplus-decl.c (hack_incomplete_structures): Now also completes
  86.     arrays of incomplete structs.
  87.  
  88.     * cplus-lex.c (build_operator_fnname): Don't get faked out by
  89.     ERROR_MARK as the TREE_CODE.
  90.  
  91.     * stor-layout.c (layout_{record,union}): For loops over fields,
  92.     skip if TREE_CODE (field) != FIELD_DECL, instead of testing if ==
  93.     CONST_DECL or VAR_DECL or TYPE_DECL etc.
  94.  
  95.     * cplus-decl.c (pushtag): Do gratuitous C++ typedefing even when
  96.     in C language scope.  Sigh.
  97.  
  98.     * cplus-decl.c (xref_tag): Don't assume CODE == TREE_CODE (REF).
  99.     It's not when the user redeclares REF as the wrong kind of tag.
  100.  
  101.     * cplus-search.c (dfs_init_vbase_pointers): Use TREE_PURPOSE of
  102.     VBASE_INIT_RESULT to hold the type of the virtual baseclass that
  103.     was initialized.
  104.     * cplus-init.c (expand_aggr_vbase_init): Walk through RESULT and
  105.     INIT_LIST in the order of CLASSTYPE_VBASECLASSES.
  106.     * cplus-init.c (expand_aggr_vbase_init_1): New function.
  107.  
  108.     * cplus-decl.c (finish_function): Test CLASSTYPE_VSIZE before
  109.     calling `build_virtual_init'.
  110.  
  111. to do:    fix protected squeaking through with -fsave-memoized
  112. to do:  unify code in expand_vec_init, expand_vec_delete
  113. to do:  for-local objects with destructors do not land in the right
  114.     cleanup contour.
  115. to do:  fix complicated multiple inheritance bugs that strike when
  116.     baseclasses are not virtual, and appear at multiple sites within
  117.     the lattice.
  118. to do:  integrate.c vs GCC.
  119. to do:  virtual functions for Convex and Choices
  120. to do:  real pointers to members
  121.  
  122. Mon Feb 19 13:48:30 1990  Michael Tiemann  (tiemann at arkesden)
  123.  
  124.     * cplus-decl.c (grokdeclarator): Fix up ENUMERAL_TYPEs which are
  125.     ANON_AGGR_NAME_P.
  126.  
  127.     * cplus-cvt.c (convert): If we know a type conversion applies,
  128.     don't try for fancy constructors.
  129.  
  130.     * cplus-decl.c (build_enumerator): TREE_TYPE (VALUE) must always
  131.     be INTEGER_TYPE_NODE before calling `build_binary_op_nodefault'.
  132.  
  133.     * cplus-decl.c (complete_array_type): Merged GCC 1.37 code.
  134.     * integrate.c (copy_for_inline): Ditto.
  135.     * cplus-decl.c (grokdeclarator): Ditto.
  136.     * stor-layout.c (layout_type): Ditto.
  137.  
  138. Sat Feb 17 08:49:21 1990  Michael Tiemann  (tiemann at arkesden)
  139.  
  140.     * cplus-typeck.c (require_instantiated_type): Make non-static.
  141.     * cplus-typeck.c (type_unknown_p): New function, returns
  142.     truthvalue of whether the TREE_TYPE of its argument is known.
  143.     * cplus-class.c (various places): Changed to call these functions.
  144.  
  145. Fri Feb 16 15:17:54 1990  Michael Tiemann  (tiemann at arkesden)
  146.  
  147.     * cplus-class.c (finish_struct): Cons up default destructors when
  148.     T uses virtual baseclasses or multiple inheritance, in addition to
  149.     the usual cases.
  150.  
  151.     * integrate.c (copy_rtx_and_substitute): If we were needing an
  152.     inline target (for example, a USE of the function return result),
  153.     and we don't have one, just cons one up.
  154.  
  155.     * cplus-init.c (expand_vec_init): Comparison of HOST_I against
  156.     zero should have been >=, not >.
  157.  
  158.     * cplus-dem.c: Fix #defines to use bcopy, bcmp instead of the str
  159.     functions.
  160.  
  161.     * cplus-cvt.c (convert): If converting to void type, check for
  162.     possible operator void.
  163.  
  164.     * stmt.c (fixup_cleanups): If cleanups expand to nothing, don't
  165.     call `reorder_insns'.
  166.  
  167.     * cplus-search.c ({push,pop}_stack_level): New functions.
  168.     Abstracts functionality of pushing/popping objects to/from
  169.     obstacks.
  170.     * cplus-search.c ({push,pop}_search_level): Use new *_stack_level
  171.     functions.
  172.     * cplus-search.c ({push,pop}_type_level): Ditto.
  173.  
  174. Tue Feb 13 11:32:12 1990  Michael Tiemann  (tiemann at teacake)
  175.  
  176.     * cplus-init.c (build_delete): This function can get visibilities
  177.     wrong if default destructors are not built (currently the case).
  178.     As a temporary fix, pass FLAGS with LOOKUP_PROTECTED_OK for base
  179.     destructor calls, and test LOOKUP_PROTECTED_OK when thinking about
  180.     complaining.
  181.  
  182. Sun Feb 11 11:47:37 1990  Michael Tiemann  (tiemann at arkesden)
  183.  
  184.     * cplus-decl.c (finish_function): Don't call `build_virtual_init'
  185.     for types which don't have virtual functions.  Similarly, don't
  186.     call `build_delete' if it doesn't need a destructor.
  187.  
  188.     * cplus-init.c (finish_base_init,build_delete): When building up
  189.     and tearing down objects' bases, build pointers to base objects
  190.     directly rather than by calling through `convert_pointer_to',
  191.     since ambiguity in the lattice causes it trouble.
  192.  
  193.     * cplus-typeck.c (build_modify_expr): Removed unneeded casts when
  194.     building sum of base address + offset.
  195.     * cplus-class.c (build_vbase_path): Ditto.
  196.     * cplus-class.c (build_vfn_ref): Ditto.
  197.     * cplus-init.c (resolve_offset_ref): Ditto.
  198.     * cplus-init.c (build_delete): Ditto.
  199.  
  200.     * cplus-typeck.c (build_modify_expr): Fix parenthesis error for
  201.     deciding whether to recurse through aggregates or not
  202.     (TYPE_USES_VIRTUAL_BASECLASSES is not enough).
  203.  
  204.     * cplus-parse.y (try): Change type from TTYPE to ITYPE.
  205.     * cplus-parse.y (stmt): Call `cplus_expand_end_try' with result of
  206.     `try' stmt.  Now, if we wanted to, we could pass additional
  207.     information about whether this try block is followed by an except
  208.     stmt or a reraise clause.
  209.     * cplus-parse.y (stmt): When processing a reraise clause, use
  210.     ERROR_MARK_NODE as the default handler, to indicate that we
  211.     actually have one, rather than NULL_TREE, which claims that we
  212.     don't.
  213.     * cplus-except.c (cplus_expand_end_except): Always try next
  214.     handler before ending the block.
  215.     
  216. Sat Feb 10 13:57:28 1990  Michael Tiemann  (tiemann at teacake)
  217.  
  218.     * cplus-init.c (build_delete): Use `convert_pointer_to' when ADDR
  219.     is TREE_LITERAL.
  220.  
  221.     * cplus-class.c (build_vfn_ref): Save intermediate result in
  222.     SAVE_EXPR so we don't have to compute each component of virtual
  223.     function pointer twice.  But only do this when BUILDING_CLEANUP
  224.     is zero.
  225.     * cplus-decl.c (maybe_build_cleanup): New global variable
  226.     BUILD_CLEANUP is controlled by this function.
  227.  
  228.     * cplus-expr.c (cplus_expand_expr): Use separate CALL_TARGET and
  229.     RETURN_TARGET, in case call to `expand_expr' returns something
  230.     different than CALL_TARGET in NEW_EXPR case.
  231.  
  232. Fri Feb  9 04:00:42 1990  Michael Tiemann  (tiemann at teacake)
  233.  
  234.     * cplus-lex.c (getch): New function.  Encapsulates call to `getc'
  235.     macro within function to save space.
  236.     * cplus-lex.c (check_newline): Call `getch' instead of `getc' to
  237.     get pragma text.
  238.  
  239. Mon Feb  5 13:55:33 1990  Michael Tiemann  (tiemann at arkesden)
  240.  
  241.     * cplus-decl.c (grokdeclarator): Don't gripe if static member has
  242.     incomplete type.
  243.  
  244. Sun Feb  4 19:51:52 1990  Michael Tiemann  (tiemann at arkesden)
  245.  
  246.     * cplus-class.c (modify_vtable_entries): Fix failure to use
  247.     proper initial value for OFFSET.
  248.  
  249.     * cplus-tree.c (layout_vbasetypes): Gross error was accidently
  250.     causing storage to be exponentially counted!  Fixed...
  251.  
  252.     * cplus-decl.c (duplicate_decls): Catch case where OLDDECLS are
  253.     some overloaded functions and NEWDECL is not a FUNCTION_DECL.
  254.  
  255.     * cplus-init.c (finish_base_init): If there are several members
  256.     with the same name (from different baseclasses), get the topmost
  257.     one.
  258.  
  259.     * cplus-tree.c (lang_simple_cst_equal): New function.  Callback
  260.     for `simple_cst_equal'.
  261.     * tree.c (simple_cst_equal): Needs new treatment for handling
  262.     NEW_EXPR and CPLUS_NEW_EXPR.  Use call-back for latter.
  263.     * tree.c (simple_cst_list_equal): Now non-static.
  264.  
  265.     * integrate.c (expand_inline_function): Use `convert_move' instead
  266.     of `emit_move_insn' when we need to copy INLINE_TARGET back to
  267.     TARGET.
  268.  
  269. Sat Feb  3 09:45:47 1990  Michael Tiemann  (tiemann at teacake)
  270.  
  271.     * ld.c: integrate changes from Mark Ullman which make linker
  272.     suitable for cross linking.
  273.  
  274. Thu Feb  1 16:27:03 1990  Michael Tiemann  (tiemann at teacake)
  275.  
  276.     * cplus-expr.c (cplus_expand_expr): If TARGET is 0, generate a new
  277.     temporary, unless MODE is BLKmode, in which case we abort.
  278.  
  279. Tue Jan 30 02:55:20 1990  Michael Tiemann  (tiemann at arkesden)
  280.  
  281.     * version.c: version 1.36.4 released.
  282.  
  283.     * cplus-decl.c (build_enumerator): Make it impossible to lose if
  284.     ENUM_NEXT_VALUE is something like INTEGER_ONE_NODE.
  285.  
  286.     * tree.c (build_int_2): Don't need to set TREE_LITERAL here, it is
  287.     set in `make_node'.
  288.     * tree.c (make_node): Increment `TREE_NODE_KINDS[C_KIND]' for
  289.     INTEGER_CST nodes.
  290.  
  291.     * cplus-init.c (expand_aggr_init_1): NEW_EXPR now encapsulates new
  292.     information (due to compiler merging); lossage fixed.
  293.  
  294.     * case.c (various places): Replace calls to `build_int_2 (x, 0)'
  295.     (where x == 0 or x == 1) with INTEGER_{ZERO,ONE}_NODE as
  296.     appropriate.
  297.  
  298.     * cplus-typeck.c (build_component_addr): Break out code to build
  299.     the ADDR_EXPR of a COMPONENT_REF from `build_unary_op'.
  300.     * cplus-cvt.c (build_up_reference): Call `build_component_addr' in
  301.     case of COMPONENT_REF.
  302.  
  303. Sun Jan 28 04:39:54 1990  Michael Tiemann  (tiemann at arkesden)
  304.  
  305.     * cplus-init.c (build_vec_delete): Set TREE_VOLATILE on BLOCK,
  306.     LOOP, and IF_STMT, to avoid spurious warning messages about
  307.     statements not being useful.
  308.     * stmt.c (warn_if_unused_value): Don's warn for LOOP_STMT,
  309.     IF_STMT, or LET_STMT.
  310.  
  311.     * cplus-decl.c (build_enumerator): Prepare for fact that `fold'
  312.     might put NOP_EXPRs around everything that is not an lvalue.
  313.  
  314.     * cplus-method.c (build_opfncall): New parameter FLAGS.
  315.     Don't lose unless FLAGS include LOOKUP_COMPLAIN; there's always a
  316.     chance that a type conversion will work, after all.
  317.     * All callers changed.
  318.  
  319.     * cplus-cvt.c (build_type_conversion): Permit `operator int' to
  320.     convert when `unsigned' is wanted (provided no `operator unsigned'
  321.     exists).  Same for `long' and `unsigned long'.
  322.  
  323.     * cplus-expr.c: New file.  Contains definition of new function
  324.     `cplus_expand_expr'.
  325.  
  326.     * cplus-lex.c (init_lex): Initialize LANG_EXPAND_EXPR.
  327.  
  328.     * toplev.c (LANG_EXPAND_EXPR): New variable is pointer-to-function
  329.     which expands language-specific tree codes.  Its default is
  330.     `fancy_abort'.
  331.     * cplus-tree.def (CPLUS_NEW_EXPR): New tree code.
  332.  
  333. Sat Jan 27 09:30:13 1990  Michael Tiemann  (tiemann at arkesden)
  334.  
  335.     * tree.c (decl_type_context): Handle LET_STMT.
  336.  
  337.     * stmt.c (expand_catch): Renaming of function
  338.     `expand_start_catch'.  This function no longer takes EXITFLAG or
  339.     ESCAPEFLAG as parameters (which is just as well, since it never
  340.     used them anyway).
  341.     * cplus-except.c (expand_cplus_start_catch): Caller changed.
  342.     * cplus-parse.y: Removed vestigial call to `expand_end_catch'.
  343.  
  344.     * cplus-decl.c (duplicate_decls): Use FUNCTION_SIZE as measure of
  345.     size of FUNCTION_DECL.
  346.  
  347.     * cplus-class.c (finish_base_struct): Get a fresh assoc list for
  348.     BASETYPE before calling `propagate_basetype_offsets'.  Also, copy
  349.     the language-specific parts of BASETYPE.
  350.     * cplus-class.c (propagate_basetype_offsets): FOR_TYPE now owns
  351.     its assoc list for sure.
  352.  
  353.     * cplus-class.c (build_vbase_path): Convert EXPR at each stage of
  354.     the lowering so that we don't get multiple calls to
  355.     `build_vbase_path' when we try to build the vbase pointer.
  356.     @@ This could probably be solved more cleanly.
  357.  
  358.     @@ Note that COMPONENT_REFs used as instance variables in method
  359.     calls lose the fact that they were of fixed type.
  360.  
  361.     * cplus-decl.c (LANG_F_OPTIONS): Add FLAG_NO_INLINE for
  362.     -fno-inline.
  363.     * cplus-decl.c (grokdeclarator): Implement FLAG_NO_INLINE.
  364.  
  365.     * cplus-decl.c (pushdecl): Only record an incomplete variable if
  366.     it is RECORD_TYPE or UNION_TYPE.  ARRAY_TYPE does not count.
  367.  
  368.     * cplus-init.c ({value,purpose}_member): Moved to tree.c.
  369.     * cplus-decl2.c (FIRST_GLOBAL_OBJECT_NAME): Moved to varasm.c.
  370.  
  371.     * cplus-init.c (build_delete): Fixed code to avoid going through
  372.     virtual function tables when some baseclasses are virtual.
  373.     Accomplished by changing parameter PROTECT to FLAGS.
  374.     * All callers changed.
  375.  
  376. Fri Jan 26 03:44:15 1990  Michael Tiemann  (tiemann at teacake)
  377.  
  378.     * cplus-decl.c (xref_tag): For jjg: make typedefs and struct defs
  379.     more equivalent.
  380.  
  381.     * cplus-decl.c (xref_tag): Derived unions are invalid.
  382.  
  383.     * cplus-decl.c (finish_function): For destructors, remember to run
  384.     base destructors for virtual baseclasses.
  385.  
  386.     * cplus-search.c (get_base_distance): Track leftmost path in chain
  387.     whether or not PATH_PTR is non-NULL.
  388.  
  389.     * cplus-init.c (expand_vec_delete): Deleted.  Callers now expand
  390.     result from `build_vec_delete'.
  391.     * Reinstall Jan 23 changes marked `@'.
  392.  
  393. Thu Jan 25 21:35:27 1990  Michael Tiemann  (tiemann at teacake)
  394.  
  395.     * expr.c (expand_expr): Handle expansion of LOOP_STMT and IF_STMT.
  396.  
  397.     * tree.c (build_loop): Bring this function out of its #ifdef.
  398.  
  399.     * stmt.c (expand_decl): Remove CLEANUP argument.
  400.     * stmt.c (expand_decl_cleanup): New function, called when cleanup
  401.     is needed.
  402.     * cplus-decl.c (finish_decl): Use `expand_decl_cleanup'.
  403.  
  404. Wed Jan 24 07:34:40 1990  Michael Tiemann  (tiemann at arkesden)
  405.  
  406.     * cplus-decl.c (maybe_build_cleanup): Never build cleanups on the
  407.     MOMENTARY_OBSTACK.
  408.  
  409.     * stmt.c: Merged to 1.36.93.
  410.     * expr.c: Merged to 1.36.93.
  411.  
  412. Tue Jan 23 02:40:42 1990  Michael Tiemann  (tiemann at teacake)
  413.  
  414.     * cplus-typeck.c (build_binary_op_nodefault): Use
  415.     `conver_pointer_to' to convert arguments before comparing
  416.     aggregate pointers.
  417.  
  418.     * cplus-class.c (build_vbase_path): Optimize path to virtual bases
  419.     through objects with fixed type.
  420.  
  421.     * cplus-typeck.c (build_component_ref_2): Deleted.
  422.     * cplus-typeck.c (build_component_ref): When FIELD comes from a
  423.     non-"normal" baseclass, go through `convert_to_pointer' to convert
  424.     DATUM to the right address.
  425.  
  426.     * cplus-typeck.c (build_unary_op): Handle case where FIELD is
  427.     really a TYPE_DECL (which is used just for its DECL_OFFSET).
  428.  
  429.     The following changes are for merged GCC/G++.  Changes marked
  430.     with `@' had to be backed out.
  431.     @ cplus-init.c (expand_delete): Deleted.
  432.     @ cplus-decl.c (maybe_build_cleanup): Return tree nodes built by
  433.     `build_delete' rather than building up structure with DELETE_EXPR.
  434.     * cplus-decl2.c (finish_function): Expand expression returned from
  435.     `build_delete' rather than calling `expand_delete'.
  436.     * cplus-init.c (expand_vec_delete): Ditto.
  437.     @ expr.c (expand_expr): No longer any need to handle
  438.     `DELETE_EXPR'.
  439.     @ tree.def (DELETE_EXPR): Move this to cplus-tree.def.
  440.  
  441. Mon Jan 22 00:21:41 1990  Michael Tiemann  (tiemann at teacake)
  442.  
  443.     * expr.c (expand_call): Don't reused pending stack space more than
  444.     once in a given nest of calls.
  445.  
  446.     * cplus-init.c (build_delete): Don't build COND_EXPRs when we know
  447.     we don't have to.
  448.  
  449.     * cplus-decl.c (finish_function): At end of destructor, no need to
  450.     cast down the virtual function table if there is no virtual
  451.     function table below (i.e., EXPRSTMT is a NOP_EXPR of
  452.     INTEGER_ZERO_NODE).
  453.  
  454.     * cplus-init.c (finish_base_init): Move code which sets
  455.     CLASSTYPE_MARKED6 of each vbase type to 1 into
  456.     `expand_aggr_vbase_init'.
  457.     * cplus-init.c (expand_aggr_vbase_init): Now static in this file.
  458.     Always set CLASSTYPE_MARKED6 of each vbase type before running the
  459.     initialization, since all virtual baseclasses exposed to this
  460.     function must be initialized.
  461.  
  462.     * cplus-search.c (build_type_pathname): Fix broken use of
  463.     obstacks.
  464.  
  465.     * cplus-typeck.c (c_expand_return): Don't try to call
  466.     `expand_return' when DECL_RESULT is of void type.
  467.  
  468.     * cplus-lex.c (build_opid): Rename C++-specific
  469.     `build_op_identifier' to `build_opid'.
  470.     @@ Suggest changing `build_op_identifier' in tree.o to interface
  471.     of `build_opid'.
  472.     * All callers changed.
  473.  
  474. Sun Jan 21 06:00:03 1990  Michael Tiemann  (tiemann at teacake)
  475.  
  476.     * dbxout.c (dbxout_function): Put out debug info for a named
  477.     return value.
  478.     * dbxout.c (dbxout_symbol): Treat a named RESULT_DECL like a
  479.     VAR_DECL.
  480.  
  481.     * cplus-decl.c (store_return_init): If named return value comes in
  482.     a register, put it in a pseudo.
  483.     * cplus-typeck.c (mark_addressable): Simplify handling of
  484.     RESULT_DECL--no need for anything fancy.
  485.     * cplus-cvt.c (convert_to_reference): Ditto.
  486.  
  487.     * cplus-method.c (build_opfncall): Test FLAGS&LOOKUP_COMPLAIN to
  488.     decide whether call to `build_overload_call' should complain.
  489.  
  490.     * cplus-decl.c (FLAG_INT_ENUM_EQUIVALENCE): New variable, controls
  491.     how ints and enums should interconvert.
  492.     * cplus-class.c (convert_harshness): Implement behavior based on
  493.     that flag.
  494.  
  495.     * cplus-class.c (build_method_call): alloca `harshness' field of
  496.     CP before calling `build_overload_call'.
  497.     * cplus-class.c (build_overload_call): Don't alloca `harshness' of
  498.     FINAL_CP, since caller does this.  Also, use `oballoc' for
  499.     `harshness' arrays of CP array when running the list of functions
  500.     to try.
  501.  
  502.     * cplus-method.c (hack_identifier): Use `error', not
  503.     `error_with_decl' to report visibility violation for static
  504.     members.  Also, compute visibility with `compute_visibility'.
  505.  
  506. Sat Jan 20 04:18:40 1990  Michael Tiemann  (tiemann at teacake)
  507.  
  508.     * cplus-decl.c (finish_decl [#if MERGED]): Don't build DECL's
  509.     cleanups until after it has been laid out.
  510.  
  511.     * cplus-decl.c (maybe_build_cleanup [#if MERGED]): Return an
  512.     RTL_EXPR instead of a DELETE_EXPR.
  513.  
  514.     * cplus-class.c (prepare_fresh_vtable): Copy the list of virtual
  515.     functions fom ASSOC, not from BASE_ASSOC (whose list is too
  516.     short).
  517.     @@ Is DECL_VPARENT right at all?
  518.  
  519.     * cplus-class.c (modify_vtable_entries): Handle case where virtual
  520.     function comes from baseclass of virtual baseclass.
  521.  
  522.     * cplus-search.c (get_base_distance): Always follow the leftmost
  523.     non-virtual path.
  524.  
  525.     * cplus-class.c (finish_struct): When inheriting a base class's
  526.     VFIELD, set its DECL_OFFSET to the correct value, for the cases
  527.     when we use CLASSTYPE_VFIELD instead of `lookup_field' to get to
  528.     the vfield pointer.
  529.  
  530.     * expr.c (expand_expr): Use language-idependent techniques for
  531.     handling NEW_EXPR.
  532.  
  533.     * cplus-init.c (expand_aggr_init): When initializing from a
  534.     CONSTRUCTOR, it does not matter whether TYPE has a constructor
  535.     defined or not: just strip out the elements as though they were
  536.     args to a constructor and proceed.
  537.  
  538.     * cplus-class.c (build_method_call): If we need the address of a
  539.     CONSTRUCTOR, initialize a fresh temporary, as in the NOP_EXPR
  540.     case.
  541.  
  542.     * cplus-decl2.c (grok_method_quals): When building type variants,
  543.     build the pointer types to the varaints.
  544.     * cplus-decl.c (grokdeclarator): Ditto.
  545.  
  546.     * cplus-class.c (build_method_call): Error message was backwards
  547.     when DECL_CONTEXT (FUNCTION) was not a basetype for
  548.     CURRENT_CLASS_TYPE.
  549.  
  550.     * cplus-decl.c (grokdeclarator): If QUALS is non-NULL, don't abort
  551.     if TYPE is not METHOD_TYPE.  The correct error message will be
  552.     generated later.
  553.  
  554.     * cplus-method.c (hack_identifier): Check visibility of VAR_DECL
  555.     and CONST_DECL nodes.
  556.  
  557.     * cplus-class.c (instantiate_type): Don't smash the operand of an
  558.     ADDR_EXPR if the type instantiation fails.  Also, only give an
  559.     error message in that case if COMPLAIN is nonzero.
  560.  
  561. Fri Jan 19 15:12:27 1990  Michael Tiemann  (tiemann at teacake)
  562.  
  563.     * cplus-decl2.c (grok_method_quals): Don't drop list of exceptions
  564.     raised.
  565.  
  566. Thu Jan 18 00:20:29 1990  Michael Tiemann  (tiemann at apple-gunkies.ai.mit.edu)
  567.  
  568.     * cplus-lex.c (init_lex): Allocate OPNAME_TAB and ASSIGNOP_TAB.
  569.  
  570. Wed Jan 17 07:26:05 1990  Michael Tiemann  (tiemann at apple-gunkies.ai.mit.edu)
  571.  
  572.     * cplus-lex.c (get_time_identifier): Added cast for `alloca'.
  573.     * cplus-tree.c (layout_basetypes): Ditto.
  574.  
  575.     * stmt.c (expand_raise): Return nonzero if in exception nesting.
  576.  
  577.     * cplus-lex.c (init_lex): If C compiler doesn't understand the
  578.     construct `sizeof ("string")', then fill in initializer for
  579.     OPNAME_END by hand.
  580.  
  581.     * cplus-init.c: Move declarations of extern struct rtx_def things
  582.     to top of file to keep /bin/cc happy.
  583.  
  584.     * cplus-lex.c (init_lex): Set DECL_PRINTABLE_NAME.
  585.  
  586.     * varasm.c (record_constant_rtx): Save DESC on `current_obstack'
  587.     instead of `saveable_obstack'.
  588.  
  589.     * tree.c (set_identifier_size): SIZE is size in bytes.
  590.     * cplus-lex.c (init_lex): Call `set_identifier_size' with number
  591.     of bytes, not number of slots.
  592.  
  593.     * toplev.c (compile_file): If `bison.simple' is out of date,
  594.     consider that an error.
  595.  
  596.     * cplus-cvt.c (convert): Better error message if type conversion
  597.     via constructor fails.
  598.  
  599.     * cplus-typeck.c (build_modify_expr): Spurious `else' appeared
  600.     when LHSTYPE was aggr type.  Deleted.
  601.  
  602.     * cplus-decl2.c (finish_file): Make the dummy variable at the end
  603.     of the virtual function table chain look defined and used (soas
  604.     not to generate spurious warnings).
  605.  
  606. Tue Jan 16 15:42:30 1990  Michael Tiemann  (tiemann at apple-gunkies.ai.mit.edu)
  607.  
  608.     * varasm.c (output_constant): Merged latest GCC changes.
  609.     * toplev.c: Merged latest GCC changes.
  610.  
  611.     * cplus-decl.c (init_lex): Must call
  612.     `set_identifier_size' before allocating any identifiers.
  613.  
  614.     * All files: Changed MEMBER_REF to OFFSET_REF.
  615.     * cplus-init.c (build_offset_ref): Rename function
  616.     `build_member_ref' to this.
  617.     * cplus-init.c (resolve_offset_ref): Rename function
  618.     `resolve_member_ref' to this.
  619.  
  620.     * cplus-lex.c (init_lex): Handle language-specific tree codes.
  621.  
  622.     * tree.def (IDENTIFIER_NODE): Default length is 2.
  623.     * tree.def ({SCOPE,MEMBER}_REF): Moved definition to
  624.     cplus-tree.def.
  625.     * tree.def (TYPE_EXPR): Ditto.
  626.  
  627.     * tree.c: Merge language-specific tree code support from GCC
  628.     version 1.90.
  629.     * tree.c (tree_cons,build_tree_list): Simplify these back to using
  630.     `make_node' instead of inline-expansion.
  631.     * tree.c (build_parse_node): renamed function `build_nt0' to this.
  632.     All callers changed.
  633.  
  634.     * Makefile glitch for collect2 fixed.
  635.  
  636. Tue Jan 16 00:38:39 1990  Michael Tiemann  (tiemann at apple-gunkies.ai.mit.edu)
  637.  
  638.     * version.c: Version 1.36.3 released.
  639.  
  640.     * Makefile: Fixed makefile for collect2 (for Convexen) as per
  641.     suggesions of <ngo%tammy@harvard.harvard.edu>.
  642.     Also fixed a typo.
  643.  
  644. Mon Jan 15 10:57:43 1990  Michael Tiemann  (tiemann at apple-gunkies.ai.mit.edu)
  645.  
  646.     * cplus-class.c (build_vbase_path): If path is erroneous (i.e., up
  647.     from a virtual baseclass), then set *BASEP = NULL_TREE.
  648.     * cplus-cvt.c (convert_to_pointer_force): Test BASETYPE before
  649.     testing the DECL_OFFSET of its TYPE_NAME.
  650.  
  651.     * expr.c (store_one_arg): Handle non-PARM_BOUNDARY BLKmode
  652.     parameters in a way that is symmetric with `assign_parms'.
  653.  
  654.     * cplus-init.c (expand_vec_init): Allow assignment semantics if
  655.     FROM_ARRAY is 2.
  656.     * cplus-typeck.c (build_modify_expr): Call `expand_vec_init' with
  657.     in this fashion if an array assignment must be performed.
  658.  
  659.     * expr.c (fixed_type_p): New function says whether the compiler
  660.     guarantees that it knows the true type of an object.
  661.     * expr.c (expand_expr): Call that function for INIT_EXPR and
  662.     MODIFY_EXPR.  Also, for MODIFY_EXPR, check both RHS and LHS.
  663.  
  664.     * cplus-typeck.c (build_unary_op): When building an ADDR_EXPR of a
  665.     COMPONENT_REF, must convert the base to the pointer type of the
  666.     DECL_CONTEXT of FIELD, not simply ARGTYPE.  Bug triggered when
  667.     FIELD has same type as a virtual or non-leftmost baseclass of
  668.     TYPE.
  669.  
  670. Sun Jan 14 07:50:28 1990  Michael Tiemann  (tiemann at apple-gunkies.ai.mit.edu)
  671.  
  672.     * cplus-typeck.c (actualparameterlist): Convert FUNCTION_DECLs for
  673.     virtual functions to their proper representation if they were
  674.     instantiated.
  675.  
  676.     * cplus-typeck.c (instantiate_type_1): New function, factors out
  677.     common code in calling `instantiate_type'.
  678.     * cplus-class.c (instantiate_type): Now permitted to call this
  679.     function with OP_IDENTIFIER.  (Previously would abort).
  680.  
  681.     * Makefile: Use $(INCLUDES) instead of various random -I options
  682.     scattered throughout front-end.
  683.  
  684.     * varasm.c (assemble_variable): Fix bug where NAME has a '*'
  685.     prefix.
  686.  
  687. Sat Jan 13 00:17:25 1990  Michael Tiemann  (tiemann at apple-gunkies.ai.mit.edu)
  688.  
  689.     * cplus-class.c (compute_conversion_costs): Fixed comments and
  690.     rearranged code that handled type instantiation.  Also handled
  691.     case where type instantiation leaves a parameter ERROR_MARK_NODE
  692.     (consequently making ACTUAL_TYPE ERROR_MARK_NODE).
  693.     * cplus-method.c (report_type_mismatch): Give better error message
  694.     when type instatiation fails and clobbers the argument type.
  695.  
  696.     * cplus-type2.c (basetype_or_else): Code factorization.
  697.     * All places with code of the form
  698.  
  699.           if (t1 == t2 || get_base_type (t1, t2, 0))
  700.             do something;
  701.           else
  702.               do something else;
  703.  
  704.           now calls this function.
  705.  
  706.     * cplus-search.c (get_base_type): For jjg@sun.com: let friend
  707.     classes TYPE have access to immediate baseclasses of TYPE.
  708.     * cplus-search.c (get_base_distance): Same change.
  709.  
  710.     * cplus-method.c (build_opfncall): Give error messages on all
  711.     overloaded functions which non-trivially fail except ADDR_EXPR and
  712.     MODIFY_EXPR.
  713.     * cplus-class.c (build_method_call): Improved error message for
  714.     non-const member function called with const object.
  715.  
  716.     * cplus-class.c (build_vbase_path): New function.  Multi-level
  717.     version of `build_vbase_pointer'.  Code was moved from
  718.     `convert_to_pointer'.
  719.     * cplus-cvt.c (convert_to_pointer): Call `build_vbase_path'.
  720.     * cplus-cvt.c (convert_pointer_to): Ditto.
  721.     * cplus-cvt.c (convert_to_pointer_force): Remove duplicated code
  722.     and call `build_vbase_path'.
  723.  
  724.     * cplus-decl.c (original_result_rtx): New variable.  If named
  725.     return value starts in register, but needs to be addressable, then
  726.     we put the original RESULT_DECL's rtl in here.
  727.     * cplus-typeck.c (c_expand_return): Implement this.
  728.     * cplus-decl.c (finish_function): At end of function, if
  729.     ORIGINAL_RESULT_RTX is non-zero, move DECL_RESULT (FNDECL) there.
  730.     * cplus-typeck.c (mark_addressable): Allow this new feature.
  731.     * cplus-cvt.c (convert_to_reference): Ditto.
  732.  
  733. Fri Jan 12 00:20:06 1990  Michael Tiemann  (tiemann at apple-gunkies.ai.mit.edu)
  734.  
  735.     * cplus-tree.h (TREE_CALLS_NEW): New meaning for TREE_LANG_FLAG_2:
  736.     for any kind of _EXPR or _REF node, it means that underneath is a
  737.     call to the storage allocator.  If we later find out what was
  738.     wanting initialization, we can pitch the call to `new', and the
  739.     subsequent copy, winning big on things like "return String (foo);".
  740.     * cplus-init.c (build_new): Set this bit.
  741.     * cplus-class.c (build_method_call): Ditto.
  742.     * cplus-method.c (build_opfncall): Ditto.
  743.     * cplus-init.c (expand_aggr_init_1): Optimize calls to
  744.     constructors.
  745.  
  746.     * cplus-cvt.c (convert_to_reference): If DECL is ERROR_MARK_NODE,
  747.     then consider this an implicit conversion; if DECL is NULL_TREE,
  748.     it is explicit.
  749.     * cplus-typeck.c (convert_for_initialization): Be explicit that
  750.     this is an implicit conversion.
  751.  
  752.     * cplus-cvt.c (convert_from_reference): Don't special-case
  753.     converting REFERENCE_EXPRs from references.
  754.  
  755.     * cplus-cvt.c (convert_to_*): Factor out checks that EXPR is a
  756.     REFERENCE_TYPE object.
  757.     * cplus-cvt.c (convert{_force}): Factor it to here.
  758.  
  759.     * cplus-cvt.c (convert_pointer_to): New function.  Previously
  760.     `convert_to_nonzero_pointer', but now takes converts to pointer-to
  761.     TYPE, rather than to TYPE.
  762.     * cplus-cvt.c (convert_to_nonzero_pointer): Deleted.
  763.     * All callers changed.
  764.  
  765.     * cplus-cvt.c (build_up_reference): If LOOKUP_PROTECTED_OK is set,
  766.     let `get_base_type' return an immediate private baseclass without
  767.     complaining.
  768.     * cplus-cvt.c (convert_to_reference): Don't need to check whether
  769.     conversion violates visibilities, since FLAGS is passed to
  770.     `convert_to_reference'.
  771.     * cplus-search.c (get_base_type): Implement that (if PROTECT == 3).
  772.  
  773.     * stmt.c (*except*): Use ESCAPE_LABEL instead of EXIT_LABEL as
  774.     primary means of control over exception handling nestings.
  775.     Where EXITFLAG was passed, also pass ESCAPEFLAG.
  776.     * All callers changed.  ESCAPEFLAG now controls behavior, not
  777.     EXITFLAG.
  778.  
  779.     * stmt.c (expand_exit_nonexcept): Delete this function.
  780.     * cplus-parse.y (stmt): Back out change which called
  781.     `expand_exit_nonexcept' instead of `expand_exit_something'.
  782.  
  783.     * cplus-init.c (expand_recursive_init): Don't forget to initialize
  784.     the vbase pointers if FOR_TYPE uses virtual baseclasses.
  785.  
  786.     * cplus-class.c (rank_for_overload): const/non-const disagreement
  787.     is between checking EVIL and checking USER.
  788.     * cplus-class.c (build_method_call): Don't hastily choose a method
  789.     which has const/non-const disagreement.
  790.  
  791.     * cplus-decl.c (build_function_decl): Unify `builtin_function' and
  792.     `auto_function'; also make it optional to push the function into
  793.     the binding contour.
  794.     * cplus-decl.c (init_decl_processing): Build ABORT_FNDECL.
  795.     * cplus-decl2.c (grok_function_init): Use ABORT_FNDECL.
  796.     * cplus-except.c (init_exception_processing): Ditto.
  797.  
  798. Thu Jan 11 10:39:31 1990  Michael Tiemann  (tiemann at apple-gunkies.ai.mit.edu)
  799.  
  800.     * cplus-decl2.c (finish_file): Merge changes from Raeburn
  801.     (raeburn@athena.mit.edu) which name file-level initializers
  802.     using global names declared instead of the filename containing
  803.     the objects needing file-level initialization.
  804.     * varasm.c (assemble_{variable,function}): Rest of changes merged.
  805.  
  806.     * cplus-cvt.c (convert_from_reference): When converting a
  807.     REFERENCE_EXPR, wrap TREE_OPERAND (VAL, 0) in the NOP_EXPR
  808.     instead of VAL--to save work later in `expand_expr'.
  809.  
  810.     * cplus-tree.h (LOOKUP_NO_CONVERSION): New flag which inhibits
  811.     looking for user-defined type conversions.
  812.     * cplus-type2.c (build_functional_cast): Use LOOKUP_NO_CONVERSION
  813.     when calling constructor since if a type conversion applied, we
  814.     don't want "two-level" conversions to take place.
  815.     * cplus-class.c (build_method_call): Test this flag when PASS == 2
  816.     and cp->user is non-zero.
  817.  
  818.     * cplus-decl.c (grokdeclarator): Don't set TYPE_HAS_DESTRUCTOR
  819.     here.
  820.     * cplus-decl2.c (grokclassfn): Set it here instead.
  821.  
  822. Wed Jan 10 07:42:39 1990  Michael Tiemann  (tiemann at apple-gunkies.ai.mit.edu)
  823.  
  824.     * cplus-class.c (build_method_call): -fall-virtual implies that
  825.     2nd argument to operator->() is an int, not a T (C::*X)(...).
  826.  
  827.     * cplus-decl.c (finish_function): Keep named return values from
  828.     catching warnings from jump.c about functions which appear to not
  829.     return a value.
  830.  
  831.     * cplus-type2.c (process_init_constructor): Test INIT before
  832.     copying TREE_HAS_CONSTRUCTOR flag to RESULT.
  833.  
  834.     * cplus-decl.c (pushdecl): If we had ANON_AGGRNAME_P in "C"
  835.     language scope, and if we get a better name, fix that up as well.
  836.     (Was only doing fixup for "C++" language scope).
  837.  
  838.     * cplus-method.c (dump_init): Handle CONSTRUCTOR as
  839.     initialization.
  840.     * cplus-typeck.c (actualparameterlist): Here, too.
  841.  
  842.     * cplus-decl.c (grokdeclarator): Move test of friend functions
  843.     with method qualifiers to `grokfndecl'.
  844.     * cplus-decl.c (grokfndecl): If QUALS is non-zero, then the
  845.     TREE_CODE of TYPE must be METHOD_TYPE.
  846.  
  847.     * integrate.c (expand_inline_function): Code using
  848.     THIS_STRUCT_VALUE_RTX was (blatantly) incorrect in case where
  849.     STRUCT_VALUE_INCOMING_RTX was MEM.  Code that looked right was
  850.     #if 0'd out, but don't know why.  Changed back to original code.
  851.  
  852. Tue Jan  9 22:56:22 1990  Michael Tiemann  (tiemann at apple-gunkies.ai.mit.edu)
  853.  
  854.     * cplus-parse.y (stmt): Exception contour is transparent to BREAK
  855.     statement.  Call `expand_exit_nonexcept' instead of
  856.     `expand_exit_something'.
  857.     * stmt.c (expand_exit_nonexcept): New function.
  858.  
  859.     * cplus-decl.c (build_enumerator): Accidently shared INTEGER_CST
  860.     nodes which should not have been shared.
  861.  
  862. Sun Jan  7 00:13:39 1990  Michael Tiemann  (tiemann at g.oswego.edu)
  863.  
  864.     * cplus-init.c (expand_aggr_init_1): Use CONST0_RTX as TARGET for
  865.     call to `expand_expr' in case of COND_EXPR.
  866.     Similar changes made elsewhere in compiler where `expand_expr' was
  867.     called.
  868.  
  869.     * cplus-typeck.c (build_modify_expr_1): When CODE is INIT_EXPR,
  870.     and we call a constructor, remember to dereference the result we
  871.     return.
  872.  
  873.     * cplus-init.c (expand_vec_init): Goto of init_by_default was
  874.     accidently circumventing initialization of variable BASE2.
  875.     Also fixed to handle initialization by default in more cases.
  876.  
  877.     * cplus-typeck.c (build_modify_expr_1): Typo.  Use "<" instead of
  878.     "<=" for CLASSTYPE_N_BASECLASS loop.
  879.     * cplus-search.c (get_base_type_1): Same typo (but this function
  880.     is never called).
  881.  
  882. Sat Jan  6 21:55:31 1990  Michael Tiemann  (tiemann at g.oswego.edu)
  883.  
  884.     * cplus-tree.h (TREE_HAS_CONSTRUCTOR): For CONSTRUCTOR, means that
  885.     it was a GNU C constructor expression.
  886.     * cplus-parse.y (cast_expr): Set that bit.
  887.     * cplus-type2.c (process_init_constructor): Propagate this bit.
  888.     * cplus-init.c (expand_aggr_init_1): Test that bit and call
  889.     `store_init_value' if set.
  890.  
  891.     * cplus-lex.c: Handle strrchr/rindex problem in one place instead
  892.     of two.
  893.  
  894.     * cplus-init.c (expand_aggr_init_1): Convert INIT to type for EXP
  895.     treating INIT as compound expr.
  896.  
  897.     * cplus-decl.c (grokparms): Can't use `error_with_decl' on a
  898.     PARM_DECL here because DECL_CONTEXT is not set up yet.  Fixed in 2
  899.     places.
  900.  
  901.     * cplus-init.c (resolve_member_ref): Check that member is
  902.     FIELD_DECL before bothering about use of non-static member in
  903.     static function context.
  904.  
  905.     * cplus-init.c (embrace_waiting_friends): If TYPE_NAME (TYPE) is
  906.     not a TYPE_DECL, it has no friends waiting.
  907.  
  908.     * cplus-dem.c (optable): Filled in ommissions found by Ron
  909.     Guilmette.
  910.  
  911.     * cplus-decl2.c (grokopexpr): If IS_DECL tells us we have a static
  912.     member function, but TYPE is a METHOD_TYPE, we must send the right
  913.     argument list to build_operator_fnname.
  914.  
  915.         * Makefile: Explicitly link all the gen*.o and insn-*.? files.
  916.     Otherwise, we get symbolic links to "gen*.o", etc.
  917.  
  918.     * make-links.g++: Added symout.c to BORROWED_FILES.
  919.  
  920. Tue Jan  2 00:39:40 1990    (tiemann at calvin)
  921.  
  922.     * cplus-except.c (cplus_expand_end_except): New parameter EXITFLAG
  923.     says whether to exit current exception contour and try the next
  924.     one.
  925.     * cplus-parse.y: Callers changed.
  926.  
  927.     * cplus-decl.c (pushdecl): Clear TREE_PUBLIC only if VAR_DECL is
  928.     TREE_READONLY and not DECL_EXTERNAL.  DECL_EXTERNAL is meaningless
  929.     for other than VAR_DECLs.
  930.     * cplus-decl.c (duplicate_decls): Same change.
  931.     @@ Maybe we can eliminate some duplicated code here!
  932.  
  933.     * cplus-tree.c (copy_to_permanent): If T is NULL_TREE, return it.
  934.  
  935.     * cplus-cvt.c (convert_to_aggr): Deal with "in charge" parameter
  936.     if BASETYPE uses virtual baseclasses.
  937.  
  938.     * cplus-class.c (build_overload_call): Change name of DECL to
  939.     OVERLOAD_NAME.  Also, append VOID_LIST_NODE to end of PARMTYPES,
  940.     to build more accurate overload name.
  941.  
  942. Mon Jan  1 13:36:07 1990    (tiemann at calvin)
  943.  
  944.     * cplus-decl.c (store_parm_decls): No need for PRESERVE flag, so
  945.     deleted.  All callers changed.
  946.  
  947.     * cplus-parse.y (member_init): De-implement keeping virtual
  948.     baseclass initializers on the permanent obstack.  Now handled by
  949.     "in charge" parameter to constructor.
  950.  
  951.     * cplus-cvt.c (convert_to_reference): Convert EXPR from reference
  952.     if it came in as a reference and its conversion to TYPE& may
  953.     change its value (i.e., if it uses MI or VB).
  954.  
  955.     * cplus-class.c (build_method_call): Use DECL_CONTEXT, not
  956.     DECL_VCONTEXT of FUNCTION when LOOKUP_NONVIRTUAL is in effect.
  957.     Factored out duplicated code in the process.
  958.  
  959.     * cplus-class.c (build_method_call): Constructors called when
  960.     `this' is logically zero must perform any virtual baseclass
  961.     initialization.  Other constructors (which are used for
  962.     initialization of sub-ojbects), never perform virtual baseclass
  963.     initialization.
  964.  
  965.